Connection pools are commonly used in computer system architectures to facilitate network access by applications hosted by the computer system. Such applications may require network access to communicate with a remote application, e.g., a database application hosted on a remote server over networks such as the Internet or the like. The provision of a pool of connections enhances the performance of the computer system due to the fact that the applications do not have to initiate a network connection from scratch, which can be computer resource intensive and can seriously degrade the performance of the system where many applications frequently attempt to connect to network resources, e.g., queue managers for managing the communication of messages between (client and server) applications over a network. Such computer systems may host application servers for hosting a plurality of applications and for maintaining a connection pool comprising a finite number of connections for the aforementioned purposes.
A problem associated with such connection pools is that connections in the pool that have been assigned to applications may go stale, i.e., may become unused without having been returned to the pool, such that the connection pool may dry up, i.e. the number of available connections may drop below critical levels such that applications requesting connections from the pool may have to wait for a connection to become available, which waiting time may exceed acceptable limits if connections are not being returned to the pool.